
#include "ui_page.h"

/*======================================== 任务函数 =====================================*/
static volatile uint8_t Flag_Srceen_IMG = 0;     //页面刷新标志  	0\默认GIF图				1\全屏刷新测试图
static volatile uint16_t Flag_Srceen_Period = 0; //页面刷新速度  	0\默认速度 1s/张		1\无间隔一直刷图

/**
 * @brief	产品应用演示动画任务
 * @param 	task -任务对象
 * @retval	None
 */
static void gif_pd_task(lv_task_t *task)
{
    uint16_t index = GIF.index;

    if (0 == Flag_Srceen_IMG)
    {
        index += PD_GIF_START;
        GIF.img = GIF_PD;
        GIF.index_max = PD_GIF_SIZE;
        if (0 == load_to_sdram_source(SPI, img, Image_Hash_Table[index].file.name, Image_Hash_Table[index].img))
        {
            lv_img_set_src(GIF.obj, &GIF.img[GIF.index++]); // 从 spi->sdram 加载图片，加载一张显示一张
            // GIF.index = (GIF.index < GIF.index_max) ? GIF.index : 0;

            LOG_INFO("[sdram_free] addr = 0x[%p]\r\n", Image_Hash_Table[index].img->data);
            sdram_free((void *)Image_Hash_Table[index].img->data);
        }

        if (GIF.index >= GIF.index_max)
        {
            GIF.index = 0;
            Flag_Srceen_IMG = 1;
        }
    }
    else //全屏刷新
    {
        index += FULL_SCR_IMG_START;
        GIF.img = Full_Scr_Img;
        GIF.index_max = FULL_SCR_IMG_SIZE;
        if (0 == load_to_sdram_source(SPI, img, Image_Hash_Table[index].file.name, Image_Hash_Table[index].img))
        {
            lv_img_set_src(GIF.obj, &GIF.img[GIF.index++]); // 从 spi->sdram 加载图片，加载一张显示一张
            // GIF.index = (GIF.index < GIF.index_max) ? GIF.index : 0;

            LOG_INFO("[sdram_free] addr = 0x[%p]\r\n", Image_Hash_Table[index].img->data);
            sdram_free((void *)Image_Hash_Table[index].img->data);
        }
        if (GIF.index >= GIF.index_max)
        {
            GIF.index = 0;
            Flag_Srceen_IMG = 0;

            lv_task_set_period(GIF.task, Flag_Srceen_Period); //设置新的任务调用周期
            Flag_Srceen_Period = (0 != Flag_Srceen_Period) ? 0 : PD_TASK_MS;
        }
    }

    lv_obj_align(GIF.obj, NULL, LV_ALIGN_CENTER, 0, 0); //相对父级居中对齐
}

/**
 * @brief	跳转 Product 页
 * @param 	parent 		- 页面父节点
 *          user_data 	- 用户自定义数据
 * @retval	obj 		- 页面光标
 */
lv_obj_t *page_jump_pd(lv_obj_t *parent, void *user_data)
{
    Flag_Srceen_IMG = 0;
    Flag_Srceen_Period = 0;

    parent = Page_Table[*(uint16_t *)user_data].obj;

    // GIF_setting
    GIF.obj = lv_img_create(parent, NULL);
    GIF.index = 0;
    GIF.img = GIF_PD;
    // GIF.addr = SDRAM_Handle.reloading_addr;
    GIF.task = lv_task_create(gif_pd_task, PD_TASK_MS, LV_TASK_PRIO_MID, NULL);
    lv_task_ready(GIF.task);

    // switch_ui_page
    lv_tabview_set_tab_act(TabView, *(uint16_t *)user_data, LV_ANIM_OFF);
    return parent;
}
